Participant info

Agency task: Agency decisions

Model: Agency decisions by VoC

## Mixed Model Anova Table (Type 3 tests, LRT-method)
## 
## Model: stage_1_choice ~ age_z * voc_z * condition_trial + (voc_z * condition_trial || 
## Model:     subject_id)
## Data: agency_model_data
## Df full model: 12
##                        Effect df      Chisq p.value
## 1                       age_z  1       0.00    .987
## 2                       voc_z  1 165.01 ***   <.001
## 3             condition_trial  1       0.02    .882
## 4                 age_z:voc_z  1  11.53 ***   <.001
## 5       age_z:condition_trial  1       0.01    .920
## 6       voc_z:condition_trial  1  51.03 ***   <.001
## 7 age_z:voc_z:condition_trial  1     4.51 *    .034
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1

Plot: Sensitivity to the value of choice

Plot: Sensitivity to value of choice with continuous age

Summary stats: Sensitivity to value of control

Agency task: Machine selection

Model: Optimal machine choices across trials by condition and age

## Mixed Model Anova Table (Type 3 tests, LRT-method)
## 
## Model: stage_2_acc ~ age_z * context * condition_trial + (context * 
## Model:     condition_trial || subject_id)
## Data: machine_model_data
## Df full model: 12
##                          Effect df     Chisq p.value
## 1                         age_z  1 15.19 ***   <.001
## 2                       context  1 28.01 ***   <.001
## 3               condition_trial  1 66.69 ***   <.001
## 4                 age_z:context  1      0.81    .369
## 5         age_z:condition_trial  1      0.51    .475
## 6       context:condition_trial  1    5.08 *    .024
## 7 age_z:context:condition_trial  1      2.18    .140
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1

Plot: Proportion optimal machine selections across age groups and trials

Explicit reward knowledge task

Explicit reward knowledge task: summary stats

Model: Explicit reward knowledge by age and true probabilities

## Mixed Model Anova Table (Type 3 tests, S-method)
## 
## Model: error ~ zTrueProb * zAge + (1 | subject_id)
## Data: explicitKnow.filtered
##           Effect        df         F p.value
## 1      zTrueProb 1, 733.00 20.64 ***   <.001
## 2           zAge 1, 145.00   7.82 **    .006
## 3 zTrueProb:zAge 1, 733.00      0.40    .525
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1

Plot: Explicit reward knowledge

LS0tCnRpdGxlOiAiRTIgVm9DIEFuYWx5c2VzIFBhcnQgMjogUmVncmVzc2lvbiBBbmFseXNlcyIKZGF0ZTogMS84LzI0Cm91dHB1dDoKICAgIGh0bWxfZG9jdW1lbnQ6CiAgICAgICAgZGZfcHJpbnQ6ICdwYWdlZCcKICAgICAgICB0b2M6IHRydWUKICAgICAgICB0b2NfZmxvYXQ6CiAgICAgICAgICAgIGNvbGxhcHNlZDogZmFsc2UKICAgICAgICAgICAgc21vb3RoX3Njcm9sbDogdHJ1ZQogICAgICAgIG51bWJlcl9zZWN0aW9uczogZmFsc2UKICAgICAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCiAgICAgICAgc2VsZl9jb250YWluZWQ6IHRydWUKLS0tCgpgYGB7ciBjaHVuayBzZXR0aW5ncywgaW5jbHVkZSA9IEZBTFNFfQojIHNldCBjaHVuayBzZXR0aW5ncwprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCAKICAgICAgICAgICAgICAgICAgICAgIGNhY2hlID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgPSBGQUxTRSkKa25pdHI6Om9wdHNfY2h1bmskc2V0KGRwaT02MDApCmtuaXRyOjpvcHRzX2tuaXQkc2V0KHJvb3QuZGlyID0gcnByb2pyb290OjpmaW5kX3JzdHVkaW9fcm9vdF9maWxlKCkpCmBgYAoKYGBge3IgbG9hZCBsaWJyYXJpZXMsIGluY2x1ZGUgPSBGfQoKI2xvYWQgbGlicmFyaWVzCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGdsdWUpCmxpYnJhcnkoYWZleCkKCiNsb2FkIHNjcmlwdHMKc291cmNlKCdhbmFseXNpc19zY3JpcHRzL3ZvY19mdW5jdGlvbnMuUicpCmBgYAoKYGBge3IgaW1wb3J0IGRhdGF9CgojIHJlYWQgaW4gbGVhcm5pbmcgZGF0YQpsZWFybmluZ19kYXRhIDwtIHJlYWRfY3N2KCdkYXRhL3Byb2Nlc3NlZC9sZWFybmluZ19kYXRhLmNzdicpCgojIHJlYWQgaW4gcGFydGljaXBhbnQgYWdlcwpwYXJ0aWNpcGFudF9hZ2VzIDwtIHJlYWRfY3N2KCdkYXRhL3ZvY19zdWJfaW5mby5jc3YnKSAKCiMgam9pbgpsZWFybmluZ19kYXRhIDwtIGlubmVyX2pvaW4obGVhcm5pbmdfZGF0YSwgcGFydGljaXBhbnRfYWdlcywgYnkgPSBjKCdzdWJqZWN0X2lkJykpICU+JQogIG11dGF0ZShhZ2VfZ3JvdXAgPSBjYXNlX3doZW4oYWdlIDwgMTMgfiAnQ2hpbGRyZW4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlIDwgMTggJiBhZ2UgPiAxMi45OSB+ICdBZG9sZXNjZW50cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2UgPiAxOCB+ICdBZHVsdHMnKSkKCmxlYXJuaW5nX2RhdGEkYWdlX2dyb3VwIDwtIGZhY3RvcihsZWFybmluZ19kYXRhJGFnZV9ncm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkNoaWxkcmVuIiwgIkFkb2xlc2NlbnRzIiwgIkFkdWx0cyIpKQoKYGBgCgpgYGB7ciBwcm9jZXNzIGxlYXJuaW5nIGRhdGF9CmxlYXJuaW5nX2RhdGEgPC0gbGVhcm5pbmdfZGF0YSAlPiUKICBtdXRhdGUoZXZfY2hvaWNlID0gY2FzZV93aGVuKGNvbnRleHQgPT0gMCB+IDksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID09IDEgfiA3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9PSAyIH4gNSksCiAgICAgICAgIGV2X2NvbXAgPSA1ICsgb2ZmZXIsCiAgICAgICAgIHZvYyA9IGV2X2Nob2ljZSAtIGV2X2NvbXAsCiAgICAgICAgIGJldHRlcl9tYWNoaW5lID0gY2FzZV93aGVuKHJld2FyZF9wcm9iX0wgPiByZXdhcmRfcHJvYl9SIH4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV3YXJkX3Byb2JfTCA8IHJld2FyZF9wcm9iX1IgfiAwLAogICAgICAgICApLAogICAgICAgICBzdGFnZV8yX2FjYyA9IGNhc2Vfd2hlbihzdGFnZV8yX2Nob2ljZSA9PSBiZXR0ZXJfbWFjaGluZSB+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlXzJfY2hvaWNlICE9IGJldHRlcl9tYWNoaW5lIH4gMCkpICU+JQogIGdyb3VwX2J5KHN1YmplY3RfaWQsIGNvbnRleHQpICU+JQogIG11dGF0ZShjb25kaXRpb25fdHJpYWwgPSByYW5rKHRyaWFsKSwKICAgICAgICAgYmxvY2sgPSBmbG9vcigodHJpYWwtMSkvMjEgKyAxKSkKCiMgZXhjbHVkZSBmaXJzdC1zdGFnZSBtaXNzZXMgYW5kIGZpcnN0LXN0YWdlIFJUIDwgMTUwIG1zCmxlYXJuaW5nX2RhdGFfZmlsdGVyZWQgPC0gbGVhcm5pbmdfZGF0YSAlPiUKICBmaWx0ZXIoc3RhZ2VfMV9ydCA+IDE1MCkKCmBgYAoKIyBQYXJ0aWNpcGFudCBpbmZvCmBgYHtyIHN1YmplY3QgaW5mb3JtYXRpb259CnN1Yl9pbmZvIDwtIGxlYXJuaW5nX2RhdGFfZmlsdGVyZWQgJT4lCiAgdW5ncm91cCgpICU+JQogIHNlbGVjdChzdWJqZWN0X2lkLCBhZ2UsIGFnZV9ncm91cCwgZ2VuZGVyKSAlPiUKICB1bmlxdWUoKSAlPiUKICBncm91cF9ieShhZ2VfZ3JvdXApICU+JQogIHN1bW1hcml6ZShOID0gbigpLCAKICAgICAgICAgICAgbWluX2FnZSA9IG1pbihhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgIG1heF9hZ2UgPSBtYXgoYWdlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICBtZWFuX2FnZSA9IG1lYW4oYWdlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICBuX2ZlbWFsZSA9IHN1bShnZW5kZXIgPT0gJ0ZlbWFsZScpLAogICAgICAgICAgICBuX21hbGUgPSBzdW0oZ2VuZGVyID09ICdNYWxlJyksCiAgICAgICAgICAgIG5fb3RoZXIgPSBzdW0oZ2VuZGVyID09ICdPdGhlcicpKQpzdWJfaW5mbwoKYGBgCgoKIyBBZ2VuY3kgdGFzazogQWdlbmN5IGRlY2lzaW9ucyAKIyMgTW9kZWw6IEFnZW5jeSBkZWNpc2lvbnMgYnkgVm9DCmBgYHtyIGFnZW5jeSBtb2RlbH0KIyBzZWxlY3QgcmVsZXZhbnQgdmFyaWFibGVzIAphZ2VuY3lfbW9kZWxfZGF0YSA8LSBsZWFybmluZ19kYXRhX2ZpbHRlcmVkICU+JQogIHNlbGVjdChzdWJqZWN0X2lkLCBzdGFnZV8xX2Nob2ljZSwgdm9jLCBjb25kaXRpb25fdHJpYWwsIGJsb2NrLCB0cmlhbCwgYWdlLCBhZ2VfZ3JvdXApCgojIyBSRUdSRVNTSU9OIE1PREVMICMjCiN6IHNjb3JlIGNvbnRpbnVvdXMgdmFyaWFibGVzCmFnZW5jeV9tb2RlbF9kYXRhJHN1YmplY3RfaWQgPC0gZmFjdG9yKGFnZW5jeV9tb2RlbF9kYXRhJHN1YmplY3RfaWQpCmFnZW5jeV9tb2RlbF9kYXRhJHZvY196IDwtIHNjYWxlX3RoaXMoYWdlbmN5X21vZGVsX2RhdGEkdm9jKQphZ2VuY3lfbW9kZWxfZGF0YSRjb25kaXRpb25fdHJpYWwgPC0gc2NhbGVfdGhpcyhhZ2VuY3lfbW9kZWxfZGF0YSRjb25kaXRpb25fdHJpYWwpCmFnZW5jeV9tb2RlbF9kYXRhJGFnZV96IDwtIHNjYWxlX3RoaXMoYWdlbmN5X21vZGVsX2RhdGEkYWdlKQoKI3J1biBtb2RlbAphZ2VuY3lfbW9kZWwgPC0gbWl4ZWQoc3RhZ2VfMV9jaG9pY2UgfiBhZ2VfeiAqIHZvY196ICogY29uZGl0aW9uX3RyaWFsICsgKHZvY196ICogY29uZGl0aW9uX3RyaWFsIHx8IHN1YmplY3RfaWQpLAogICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGFnZW5jeV9tb2RlbF9kYXRhLAogICAgICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwKICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJMUlQiLAogICAgICAgICAgICAgICAgICAgICAgZXhwYW5kX3JlID0gVCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9Z2xtZXJDb250cm9sKG9wdGltaXplcj0iYm9ieXFhIiwgb3B0Q3RybD1saXN0KG1heGZ1bj0xZTYpKSkKCiNzaG93IG1vZGVsIHJlc3VsdHMKYWdlbmN5X21vZGVsCmBgYAoKIyMgUGxvdDogU2Vuc2l0aXZpdHkgdG8gdGhlIHZhbHVlIG9mIGNob2ljZQpgYGB7ciB2b2MgcGxvdCwgZmlnLmhlaWdodCA9IDQsIGZpZy53aWR0aCA9IDcsIHVuaXQgPSAiaW4ifQojIyBQTE9UICMjCmFnZW5jeV9zdWJfbWVhbnMgPC0gYWdlbmN5X21vZGVsX2RhdGEgJT4lIAogIG11dGF0ZSh0YXNrX2hhbGYgPSBjYXNlX3doZW4odHJpYWwgPCAxNTggfiAiRmlyc3QgSGFsZiBvZiBUYXNrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYWwgPiAxNTcgfiAiU2Vjb25kIEhhbGYgb2YgVGFzayIpKSAlPiUKICBncm91cF9ieSh0YXNrX2hhbGYsIHZvYywgc3ViamVjdF9pZCwgYWdlX2dyb3VwKSAlPiUKICBzdW1tYXJpemUobWVhbl9zdWJfYWdlbmN5ID0gbWVhbihzdGFnZV8xX2Nob2ljZSwgbmEucm0gPSBUKSkKCmFnZW5jeV9tZWFucyA8LSBhZ2VuY3lfc3ViX21lYW5zICU+JSAKICBncm91cF9ieSh0YXNrX2hhbGYsIHZvYywgYWdlX2dyb3VwKSAlPiUKICBzdW1tYXJpemUobWVhbl9hZ2VuY3kgPSBtZWFuKG1lYW5fc3ViX2FnZW5jeSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgc2VfYWdlbmN5ID0gc2QobWVhbl9zdWJfYWdlbmN5IC8gc3FydChuKCkpKSkKCmFnZW5jeV9wbG90IDwtIGdncGxvdChhZ2VuY3lfbWVhbnMsIGFlcyh4ID0gdm9jLCB5ID0gbWVhbl9hZ2VuY3ksIGNvbG9yID0gYWdlX2dyb3VwKSkgKwogIGZhY2V0X3dyYXAofnRhc2tfaGFsZikgKwogIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gYWdlX2dyb3VwKSkgKyAKICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gbWVhbl9hZ2VuY3kgLSBzZV9hZ2VuY3ksIHltYXggPSBtZWFuX2FnZW5jeSArIHNlX2FnZW5jeSksIHdpZHRoID0gLjEpICsgCiAgZ2VvbV9saW5lKCkgKwogIHZvY190aGVtZSgpICsgCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcz1jKCIjODQzNDdDIiwgIiNCNDA0MjQiLCAiI0VCNkQxRSIpLCBuYW1lID0gIkFnZSBHcm91cCIpICsKICB4bGFiKCJWYWx1ZSBvZiBDaG9pY2UgKFZvQykiKSArCiAgeWxhYigiUHJvcG9ydGlvbiBBZ2VuY3kgQ2hvaWNlcyIpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAuNSwgbGluZXR5cGUgPSAiZGFzaGVkIikgKwogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IDAsIGxpbmV0eXBlID0gImRhc2hlZCIpCmFnZW5jeV9wbG90CmBgYAoKCiMjIFBsb3Q6IFNlbnNpdGl2aXR5IHRvIHZhbHVlIG9mIGNob2ljZSB3aXRoIGNvbnRpbnVvdXMgYWdlIApgYGB7ciB2b2MgcGxvdCBjb250aW51b3VzIGFnZSwgZmlnLmhlaWdodCA9IDMuOSwgZmlnLndpZHRoID0gMywgdW5pdCA9ICJpbiJ9CgojcnVuIG1vZGVsIHdpdGhvdXQgYWdlIHRvIGdldCByYW5kb20gZWZmZWN0cyBmb3IgZWFjaCBwYXJ0aWNpcGFudAphZ2VuY3lfZ2xtZXIgPC0gbWl4ZWQoc3RhZ2VfMV9jaG9pY2UgfiAgdm9jX3ogKiBjb25kaXRpb25fdHJpYWwgKyAodm9jX3ogKiBjb25kaXRpb25fdHJpYWwgfCBzdWJqZWN0X2lkKSwKICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBhZ2VuY3lfbW9kZWxfZGF0YSwgCiAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbCwgCiAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSAiTFJUIiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9Z2xtZXJDb250cm9sKG9wdGltaXplcj0iYm9ieXFhIixvcHRDdHJsPWxpc3QobWF4ZnVuPTFlNikpLAogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuID0gIm1lck1vZCIpIAoKI2dldCBmaXhlZCBlZmZlY3Qgb2YgelZvQwpWb0NfZml4ZWRlZmYgPC0gYXMuZGF0YS5mcmFtZShjb2VmKHN1bW1hcnkoYWdlbmN5X2dsbWVyKSkpJEVzdGltYXRlWzJdClZvQ19pbnRfZml4ZWRlZmYgPC0gYXMuZGF0YS5mcmFtZShjb2VmKHN1bW1hcnkoYWdlbmN5X2dsbWVyKSkpJEVzdGltYXRlWzRdCgojZ2V0IHJhbmRvbSBlZmZlY3RzClZvQ19lZmZlY3RzIDwtIHJhbmVmKGFnZW5jeV9nbG1lcikkc3ViamVjdF9pZCAlPiUKICAgIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAic3ViamVjdF9pZCIpCgojY29tYmluZSB3aXRoIGFnZQpWb0Nfc3ViRWZmZWN0cyA8LSBhZ2VuY3lfbW9kZWxfZGF0YSAlPiUKICAgIHNlbGVjdChzdWJqZWN0X2lkLCBhZ2UpICU+JSAKICAgIHVuaXF1ZSgpICU+JQogICAgbGVmdF9qb2luKFZvQ19lZmZlY3RzLCBieSA9IGMoInN1YmplY3RfaWQiKSkgJT4lCiAgICBtdXRhdGUoelZvQ0Z1bGwgPSB2b2NfeiArIFZvQ19maXhlZGVmZiwgCiAgICAgICAgICAgaW50RnVsbCA9IGB2b2Nfejpjb25kaXRpb25fdHJpYWxgICsgVm9DX2ludF9maXhlZGVmZikKCiNwbG90IGFnZSBieSBWb0MgZWZmZWN0ClZvQ19wbG90X2NvbnRpbnVvdXNBZ2UgPC0gZ2dwbG90KFZvQ19zdWJFZmZlY3RzLCBhZXMoeCA9IGFnZSwgeSA9IHpWb0NGdWxsKSkgKwogICAgZ2VvbV9wb2ludChjb2xvciA9ICIjRUI2RDFFIikgKyAKICAgIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGNvbG9yID0gIiM4NDM0N0MiLCBmaWxsID0gIiM4NDM0N0MiKSArCiAgICB2b2NfdGhlbWUoKSArIAogICAgeGxhYigiQWdlIikgKwogICAgeWxhYigiVm9DIEVmZmVjdCIpIApWb0NfcGxvdF9jb250aW51b3VzQWdlCgojcGxvdCBhZ2UgYnkgVm9DIHggdHJpYWwgZWZmZWN0ClZvQ19wbG90X2NvbnRpbnVvdXNBZ2VUcmlhbCA8LSBnZ3Bsb3QoVm9DX3N1YkVmZmVjdHMsIGFlcyh4ID0gYWdlLCB5ID0gaW50RnVsbCkpICsKICAgIGdlb21fcG9pbnQoY29sb3IgPSAiI0VCNkQxRSIpICsgCiAgICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBjb2xvciA9ICIjODQzNDdDIiwgZmlsbCA9ICIjODQzNDdDIikgKwogICAgdm9jX3RoZW1lKCkgKyAKICAgIHhsYWIoIkFnZSIpICsKICAgIHlsYWIoIlZvQyB4IFRyaWFsIEVmZmVjdCIpIApWb0NfcGxvdF9jb250aW51b3VzQWdlVHJpYWwKYGBgCgoKCiMjIFN1bW1hcnkgc3RhdHM6IFNlbnNpdGl2aXR5IHRvIHZhbHVlIG9mIGNvbnRyb2wKYGBge3Igdm9jIHN1bW1hcnkgc3RhdHN9CgojIFdoYXQgcHJvcG9ydGlvbiBvZiB0cmlhbHMgZGlkIHBhcnRpY2lwYW50cyBjaG9vc2UgYWdlbmN5IHdoZW4gVm9DIHdhcyAwPwpWb0NfemVyb19tZWFuc19zdWIgPC0gbGVhcm5pbmdfZGF0YV9maWx0ZXJlZCAlPiUgCiAgICBmaWx0ZXIodm9jID09IDApICU+JQogICAgZ3JvdXBfYnkoc3ViamVjdF9pZCwgYWdlX2dyb3VwKSAlPiUKICAgIHN1bW1hcml6ZShtZWFuU3ViQWdlbmN5ID0gbWVhbihzdGFnZV8xX2Nob2ljZSwgbmEucm0gPSBUKSkKClZvQ196ZXJvX21lYW5zIDwtIFZvQ196ZXJvX21lYW5zX3N1YiAlPiUKICB1bmdyb3VwKCkgJT4lCiAgc3VtbWFyaXplKG1lYW5BZ2VuY3kgPSBtZWFuKG1lYW5TdWJBZ2VuY3ksIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgc2VBZ2VuY3kgPSBzZChtZWFuU3ViQWdlbmN5IC8gc3FydChuKCkpKSkKVm9DX3plcm9fbWVhbnMKYGBgCgoKCiMgQWdlbmN5IHRhc2s6IE1hY2hpbmUgc2VsZWN0aW9uCiMjIE1vZGVsOiBPcHRpbWFsIG1hY2hpbmUgY2hvaWNlcyBhY3Jvc3MgdHJpYWxzIGJ5IGNvbmRpdGlvbiBhbmQgYWdlCmBgYHtyIG1hY2hpbmUgc2VsZWN0aW9uIGRlY2lzaW9uc30KIyBzZWxlY3QgdmFyaWFibGVzIGZvciBpbmNsdXNpb24gaW4gbWl4ZWQtZWZmZWN0cyBtb2RlbCAobm8gYWdlIGZvciBub3cpCm1hY2hpbmVfbW9kZWxfZGF0YSA8LSBsZWFybmluZ19kYXRhX2ZpbHRlcmVkICU+JQogIGZpbHRlcihzdGFnZV8xX2Nob2ljZSA9PSAxKSAlPiUKICBmaWx0ZXIoY29udGV4dCA8IDIpICU+JQogIHNlbGVjdChzdWJqZWN0X2lkLCBzdGFnZV8yX2FjYywgY29udGV4dCwgY29uZGl0aW9uX3RyaWFsLCBibG9jaywgYWdlLCBhZ2VfZ3JvdXApICU+JQogIGRyb3BfbmEoKQoKIyMgUkVHUkVTU0lPTiBNT0RFTCAjIwojeiBzY29yZSBjb250aW51b3VzIHZhcmlhYmxlcwptYWNoaW5lX21vZGVsX2RhdGEkc3ViamVjdF9pZCA8LSBmYWN0b3IobWFjaGluZV9tb2RlbF9kYXRhJHN1YmplY3RfaWQpCm1hY2hpbmVfbW9kZWxfZGF0YSRjb250ZXh0IDwtIGZhY3RvcihtYWNoaW5lX21vZGVsX2RhdGEkY29udGV4dCkKbWFjaGluZV9tb2RlbF9kYXRhJGNvbmRpdGlvbl90cmlhbCA8LSBzY2FsZV90aGlzKG1hY2hpbmVfbW9kZWxfZGF0YSRjb25kaXRpb25fdHJpYWwpCm1hY2hpbmVfbW9kZWxfZGF0YSRhZ2VfeiA8LSBzY2FsZV90aGlzKG1hY2hpbmVfbW9kZWxfZGF0YSRhZ2UpCgojcnVuIG1vZGVsCm1hY2hpbmVfbW9kZWwgPC0gbWl4ZWQoc3RhZ2VfMl9hY2MgfiBhZ2VfeiAqIGNvbnRleHQgKiBjb25kaXRpb25fdHJpYWwgKyAoY29udGV4dCAqIGNvbmRpdGlvbl90cmlhbCB8fCBzdWJqZWN0X2lkKSwKICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBtYWNoaW5lX21vZGVsX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSAiYmlub21pYWwiLAogICAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0gIkxSVCIsCiAgICAgICAgICAgICAgICAgICAgICBleHBhbmRfcmUgPSBULAogICAgICAgICAgICAgICAgICAgICAgY29udHJvbD1nbG1lckNvbnRyb2wob3B0aW1pemVyPSJib2J5cWEiLCBvcHRDdHJsPWxpc3QobWF4ZnVuPTFlNikpKQoKI3Nob3cgbW9kZWwgcmVzdWx0cwptYWNoaW5lX21vZGVsCmBgYAoKIyMgUGxvdDogUHJvcG9ydGlvbiBvcHRpbWFsIG1hY2hpbmUgc2VsZWN0aW9ucyBhY3Jvc3MgYWdlIGdyb3VwcyBhbmQgdHJpYWxzCmBgYHtyIHBsb3QgYmFuZGl0IGNob2ljZXMgYWNyb3NzIHRyaWFscywgd2lkdGggPSA3LCBoZWlnaHQgPSA0LCB1bml0ID0gImluIn0KCiMjIFBMT1QgIyMKbWFjaGluZV9zZWxlY3Rpb25fc3ViX21lYW5zIDwtIG1hY2hpbmVfbW9kZWxfZGF0YSAlPiUKICBncm91cF9ieShjb250ZXh0LCBibG9jaywgc3ViamVjdF9pZCwgYWdlX2dyb3VwKSAlPiUgCiAgc3VtbWFyaXplKHN1Yl9hY2MgPSBtZWFuKHN0YWdlXzJfYWNjLCBuYS5ybSA9IFQpKQoKbWFjaGluZV9zZWxlY3Rpb25fbWVhbnMgPC0gbWFjaGluZV9zZWxlY3Rpb25fc3ViX21lYW5zICU+JQogIGdyb3VwX2J5KGNvbnRleHQsIGJsb2NrLCBhZ2VfZ3JvdXApICU+JSAKICBzdW1tYXJpemUobWVhbl9hY2MgPSBtZWFuKHN1Yl9hY2MpLAogICAgICAgICAgICBzZSA9IHNkKHN1Yl9hY2MpL3NxcnQobigpKSkKCm1hY2hpbmVfc2VsZWN0aW9uX3Bsb3QgPC0gZ2dwbG90KG1hY2hpbmVfc2VsZWN0aW9uX21lYW5zLCBhZXMoeD1ibG9jaywgeT1tZWFuX2FjYywgY29sb3I9ZmFjdG9yKGNvbnRleHQpKSkgKwogIGZhY2V0X3dyYXAofmFnZV9ncm91cCkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDMpICsKICBnZW9tX2ppdHRlcihkYXRhID0gbWFjaGluZV9zZWxlY3Rpb25fc3ViX21lYW5zLCAgYWVzKHg9YmxvY2ssIHk9c3ViX2FjYywgY29sb3I9ZmFjdG9yKGNvbnRleHQpKSwgc2l6ZSA9IC41KSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWVzKGZpbGwgPSBmYWN0b3IoY29udGV4dCkpKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gLjUsIGxpbmV0eXBlPSJkYXNoZWQiKSArCiAgeWxhYigiUHJvcG9ydGlvbiBPcHRpbWFsIE1hY2hpbmUgU2VsZWN0aW9ucyIpICsKICB4bGFiKCJCbG9jayIpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gYyg0LCA4LCAxMikpICsKICBzY2FsZV9maWxsX21hbnVhbChuYW1lPSJDb250ZXh0IiwKICAgICAgICAgICAgICAgICAgICBsYWJlbHM9YygiOTAvMTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI3MC8zMCIpLAogICAgICAgICAgICAgICAgICAgIHZhbHVlcz1jKGNvbG9yMSwgY29sb3IzKSwgCiAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9sZWdlbmQocmV2ZXJzZT1UUlVFKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbChuYW1lPSJDb250ZXh0IiwKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzPWMoIjkwLzEwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjcwLzMwIiksCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1jKGNvbG9yMSwgY29sb3IzKSwKICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9sZWdlbmQocmV2ZXJzZT1UUlVFKSkgKwogIHZvY190aGVtZSgpICsKICB0aGVtZShzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemU9MTIpKQptYWNoaW5lX3NlbGVjdGlvbl9wbG90CmBgYAoKCgojIEV4cGxpY2l0IHJld2FyZCBrbm93bGVkZ2UgdGFzayAKIyMgRXhwbGljaXQgcmV3YXJkIGtub3dsZWRnZSB0YXNrOiBzdW1tYXJ5IHN0YXRzCmBgYHtyIGV4cGxpY2l0IGtub3dsZWRnZSB0YXNrfQoKIyBSZWFkIGluIGRhdGEKZXhwbGljaXRLbm93IDwtIHJlYWRfY3N2KCdkYXRhL3Byb2Nlc3NlZC9leHBsaWNpdF9kYXRhLmNzdicpIAojZXhwbGljaXRLbm93JHN1YmplY3RfaWQgPC0gZmFjdG9yKGV4cGxpY2l0S25vdyRzdWJqZWN0X2lkKQoKI2NvbWJpbmUgd2l0aCBhZ2UKZXhwbGljaXRLbm93IDwtIGZ1bGxfam9pbihleHBsaWNpdEtub3csIHBhcnRpY2lwYW50X2FnZXMsIGJ5ID0gYygic3ViamVjdF9pZCIpKQoKZXhwbGljaXRLbm93ICU+JSAKICBncm91cF9ieShzdWJqZWN0X2lkLCBhZ2UpICU+JSAKICBzdW1tYXJpemUobSA9IG1lYW4oZXJyb3IpKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBzdW1tYXJpemUobWVhbkVyciA9IG1lYW4obSwgbmEucm09VCksIHNkID0gc2QobSwgbmEucm0gPSBUKSkKYGBgCgojIyBNb2RlbDogRXhwbGljaXQgcmV3YXJkIGtub3dsZWRnZSBieSBhZ2UgYW5kIHRydWUgcHJvYmFiaWxpdGllcwpgYGB7ciBleHBsaWNpdCBrbm93bGVkZ2UgbW9kZWx9CgojcmUtc2NhbGUgYWdlIGFuZCB6VHJ1ZVByb2IKZXhwbGljaXRLbm93LmZpbHRlcmVkIDwtIGV4cGxpY2l0S25vdyAlPiUKICAgIHNlbGVjdChzdWJqZWN0X2lkLCBhZ2UsIHRydWVfcHJvYiwgZXJyb3IpICU+JQogICAgZHJvcF9uYSgpCgpleHBsaWNpdEtub3cuZmlsdGVyZWQkekFnZSA8LSBzY2FsZShleHBsaWNpdEtub3cuZmlsdGVyZWQkYWdlKQpleHBsaWNpdEtub3cuZmlsdGVyZWQkelRydWVQcm9iIDwtIHNjYWxlKGV4cGxpY2l0S25vdy5maWx0ZXJlZCR0cnVlX3Byb2IpCgojIHJ1biBtb2RlbApleHBsaWNpdEtub3dfZXJyb3JieVRydWVQcm9iQWdlLm1peGVkIDwtIG1peGVkKGVycm9yIH4gelRydWVQcm9iKnpBZ2UgKyAoMXxzdWJqZWN0X2lkKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGV4cGxpY2l0S25vdy5maWx0ZXJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSAiUyIpIApleHBsaWNpdEtub3dfZXJyb3JieVRydWVQcm9iQWdlLm1peGVkCmBgYAoKIyMgUGxvdDogRXhwbGljaXQgcmV3YXJkIGtub3dsZWRnZQpgYGB7ciBwbG90IGV4cGxpY2l0IGtub3dsZWRnZX0KCmV4cGxpY2l0S25vdyA8LSBleHBsaWNpdEtub3cgJT4lCiAgbXV0YXRlKGFnZV9ncm91cCA9IGNhc2Vfd2hlbihhZ2UgPCAxMyB+ICdDaGlsZHJlbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2UgPCAxOCAmIGFnZSA+IDEyLjk5IH4gJ0Fkb2xlc2NlbnRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZSA+IDE4IH4gJ0FkdWx0cycpKQoKZXhwbGljaXRLbm93JGFnZV9ncm91cCA8LSBmYWN0b3IoZXhwbGljaXRLbm93JGFnZV9ncm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkNoaWxkcmVuIiwgIkFkb2xlc2NlbnRzIiwgIkFkdWx0cyIpKQoKIyBwbG90IHJlc3BvbnNlIGJ5IGJhbmRpdApleHBsaWNpdEtub3cgJT4lIAogICAgZ2dwbG90KC4sIGFlcyh4PWZhY3Rvcih0cnVlX3Byb2IpLCB5PXJlc3BvbnNlLCBmaWxsPWFnZV9ncm91cCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoY29sb3IxLCBjb2xvcjIsIGNvbG9yMyksIG5hbWUgPSAiQWdlIEdyb3VwIikgKwogICAgeWxhYigiUmVwb3J0ZWQgUmV3YXJkIFByb2JhYmlsaXR5IikgKwogICAgeGxhYigiVHJ1ZSBSZXdhcmQgUHJvYmFiaWxpdHkiKSArCiAgICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoIjEwJSIsICIzMCUiLCAiNTAlIiwgIjUwJSIsICI3MCUiLCAiOTAlIikpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBjKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkpLCAKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiMTAlIiwgIjIwJSIsICIzMCUiLCAiNDAlIiwgIjUwJSIsICI2MCUiLCAiNzAlIiwgIjgwJSIsICI5MCUiKSkgKwogICAgdm9jX3RoZW1lKCkKYGBgCg==